using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;

namespace Polymod.TemplateBuilders
{
    public class ModelTreeTemplateBuilder : ModelTemplateBuilder
    {
        protected override Type GetModelBaseType(ModelTemplateParameters parameters)
        {
            return typeof(ModelBase<>).MakeGenericType(parameters.ModelType);
        }

        protected override IInvoker CreateInvoker(FieldInfo fieldInfo)
        {
            return new ModelInvoker(base.CreateInvoker(fieldInfo), base.ModelFactory);
        }
        protected override IInvoker CreateInvoker(PropertyInfo propertyInfo)
        {
            return new ModelInvoker(base.CreateInvoker(propertyInfo), base.ModelFactory);
        }
    }
}
